/*
 *  (\_()
 *  (o_O)
 * *(   )
 *
 * File:   main.c
 * Author: Kathrin Holzmann, Jon Barg
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


/*
 * initialise the array with random int values.
 */
void fill( int *a, int len ) {
	int i;
	for( i = 0; i < len; i++ ) {
		a[i] = rand() % len;
	}
	return;
}

/*
 * prints Values of int-Array via printf
 */
void printArr(int *a, int len){
    int k=0;

    for(k=0;k<len;k++){
            printf("%i ",a[k]);
        }
        printf("\n");
}



void reverse( int *a, int len ) {
	int i, v;
	for( i = 0; i < (len / 2); i++ ) {
		v = a [ i ];
		a[ i ] =	a[ len - i - 1];
		a[ len - i - 1 ] = v;
	}
	return;
}

int main(void) {
	
	int *arr;
    int le;
	char algorythm;
	printf("Gewuenschter Sortieralgorythmus auswaehlen! ");
	printf("|—————————————————————————————————————————| \n");
	printf("|::InsertionsSort: 'i'::::::::::::::::::::| \n");
	printf("|—————————————————————————————————————————| \n\n");
    scanf(" %c",&algorythm);
	
	if (algorythm=='i') {
		
	
	
		printf("\n SelectionSort:");
		clock_t start, end;

		printf("Gewuenschte Array laenge");
		scanf(" %i",&le);

		arr = (int *) malloc( sizeof( int[ le ] ));	/* memory array a[len] */

		//Array mit zufaelligen Werten fuellen

		fill(arr,le);
		printf("Array erstellt:\n");
		//printArr(arr,le);
		
		//1. Zeitmessung
		start=clock();
		insertionSort(arr,le);
		end =clock();


		printf( "\nZufaelliges Array: %ld ms.\n", (end - start));
		//printArr(arr,le);

		//Sortiertes Array umdrehen
		reverse(arr,le);
		printf("\nArray gedreht:\n");
		//printArr(arr,le);

		//2. Zeitmessung

		start=clock();
		insertionSort(arr,le);
		end =clock();

		printf( "\nWorst Case Array: %ld ms.\n", (end - start));
		//printArr(arr,le);
		//3. Zeitmessung
		start=clock();
		insertionSort(arr,le);
		end =clock();

		printf( "\nBest Array: %ld ms.\n", (end - start));
		//printArr(arr,le);
	}
    return 0;
}

